package com.qk.management.annotation;

import com.qk.management.statemachine.event.BusinessEvent;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BusinessStateMachineTransition {
    /**
     * 状态机ID来源 - SpEL表达式
     * 例如: "#id" 或 "#businessDTO.id"
     */
    String machineId() default "";
    
    /**
     * 触发的事件
     */
    BusinessEvent event();
    
    /**
     * 当前状态来源 - SpEL表达式
     * 例如: "#businessDTO.status" 或从数据库查询
     */
    String currentState() default "";
    
    /**
     * 是否需要从数据库查询当前状态
     * 如果为true，则根据machineId查询实体获取状态
     */
    boolean queryFromDatabase() default false;
}
